/* Text 节点由 Text 类型表示，包含按字面解释的纯文本，也可能包含转义后的 HTML字符，但不 含 HTML代码。Text 类型的节点具有以下特征： 
  nodeType 等于 3
  nodeName 值为 "#text"
  nodeValue 值为节点中包含的文本
  parentNode 值为 Element 对象
  不支持子节点
 */
/* 
Text 节点中包含的文本可以通过 nodeValue 属性访问，也可以通过 data 属性访问，这两个属性 包含相同的值。修改 nodeValue 或 data 的值，也会在另一个属性反映出来。文本节点暴露了以下操 作文本的方法： 
  appendData(text), 向文本末尾添加文本 text
  deleteData(offset, count) 从位置 offset 开始删除 count 个字符
  insertData(offset, text) 在位置 offset 插入 text
  replaceData(offset, count, text) , 用 text 替换从位置 offset 到 offset + count 的文本
  splitText(offset) , 在位置 offset 将当前文本级诶但拆分为两个文本节点
  substringData(offset, count), 提取从位置 offset 到 offset + count 的文本

注意：默认情况下，包含文本内容的每个元素多只能有一个文本节点。
*/

// 创建文本节点
let element = document.createElement('div'),
    text = document.createTextNode('this is text!');
    
element.className = 'message';
element.appendChild(text);

document.body.appendChild(element);

// 在将一个文本节点作为另一个文本节点的同胞插入后，两个文本节点的文本之间不会包含空格。 
let element = document.createElement("div"); 
element.className = "message";

let textNode = document.createTextNode("Hello world!"); 
element.appendChild(textNode);

let anotherTextNode = document.createTextNode("Yippee!"); 
element.appendChild(anotherTextNode);

document.body.appendChild(element);

alert(element.childNodes.length);    // 2 

element.normalize();
alert(element.childNodes.length);    // 1 
alert(element.firstChild.nodeValue); // "Hello world!Yippee!" 

/* 
Text 类型定义了一个与 normalize()相反的方法——splitText()。这个方法可以在指定的偏移 位置拆分 nodeValue，将一个文本节点拆分成两个文本节点。拆分之后，原来的文本节点包含开头到 偏移位置前的文本，新文本节点包含剩下的文本。这个方法返回新的文本节点，具有与原来的文本节点 相同的 parentNode。
*/
let element = document.createElement("div");
element.className = "message";

let textNode = document.createTextNode("Hello world!");
element.appendChild(textNode);

document.body.appendChild(element);

let newNode = element.firstChild.splitText(5);
alert(element.firstChild.nodeValue);  // "Hello" 
alert(newNode.nodeValue);             // " world!" 
alert(element.childNodes.length);     // 2
// 在这个例子中，包含"Hello world!"的文本节点被从位置 5 拆分成两个文本节点。位置 5 对应 "Hello"和"world!"之间的空格，因此原始文本节点包含字符串"Hello"，而新文本节点包含文本" world!"（包含空格）。 
